package com.lemobar.pay.model.alipay.response;

import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 *
 * 异步返回参数
 * 支付回调 返回的对象
 * WAP https://opendocs.alipay.com/open/203/105286
 * 付款码 https://opendocs.alipay.com/open/194/103296
 * APP https://opendocs.alipay.com/open/204/105301
 */
@Data
public class AliPayAsyncResponse implements Serializable {

    /**
     * 通知时间
     */
    private Date notifyTime;

    /**
     * 	通知的类型
     */
    private String notifyType;

    /**
     * 通知校验ID
     */
    private String notifyId;

    /**
     * 支付宝分配给开发者的应用 ID。
     */
    private String appId;

    /**
     * 编码格式，如 utf-8、gbk、gb2312 等。
     */
    private String charset;

    /**
     * 接口版本，固定为：1.0。
     */
    private String version;

    /**
     * 签名类型
     * 商户生成签名字符串所使用的签名算法类型，目前支持 RSA2 和 RSA，推荐使用 RSA2。
     */
    private String signType;

    /**
     * 签名
     */
    private String sign;

    /**
     * 支付宝交易号
     */
    private String tradeNo;

    /**
     * 商户订单号
     */
    private String outTradeNo;

    /**
     * 商户业务 ID，主要是退款通知中返回退款申请的流水号。
     */
    private String outBizNo;

    /**
     * 买家支付宝账号对应的支付宝唯一用户号。以 2088 开头的纯 16 位数字。
     */
    private String buyerId;

    /**
     * 买家支付宝账号。
     */
    private String buyerLogonId;

    /**
     * 卖家支付宝用户号。。
     */
    private String sellerId;

    /**
     * 卖家支付宝用户号
     */
    private String sellerEmail;


    /**
     * 交易目前所处的状态
     * WAIT_BUYER_PAY	交易创建，等待买家付款。
     * TRADE_CLOSED	未付款交易超时关闭，或支付完成后全额退款。
     * TRADE_SUCCESS	交易支付成功。
     * TRADE_FINISHED	交易结束，不可退款。
     */
    private String tradeStatus;



    /**
     * 本次交易支付的订单金额，单位为人民币（元）。
     */
    private Double totalAmount;

    /**
     * 商家在交易中实际收到的款项，单位为人民币（元）。
     */
    private Double receiptAmount;


    /**
     * 用户在交易中支付的可开发票的金额。
     */
    private Double invoiceAmount;


    /**
     * 用户在交易中支付的金额。
     */
    private Double buyerPayAmount;



    /**
     * 使用集分宝支付的金额。
     */
    private Double pointAmount;
    /**
     * 退款通知中，返回总退款金额，单位为人民币（元），支持两位小数。。
     */
    private Double refundFee;

    /**
     * 实际退款金额。商户实际退款给用户的金额，单位为元，支持两位小数。
     * 支付宝 付款码支付异步通知 https://opendocs.alipay.com/open/194/103296
     */
    private Double sendBackFee;
    /**
     * 商品的标题/交易标题/订单标题/订单关键字等，是请求时对应的参数，原样通知回来。
     */
    private String subject;

    /**
     * 该订单的备注、描述、明细等。对应请求时的 body 参数，原样通知回来。
     */
    private String body;


    /**
     * 该笔交易创建的时间。格式为yyyy-MM-dd HH:mm:ss
     */
    private Date gmtCreate;
    /**
     * 该笔交易的买家付款时间。格式为yyyy-MM-dd HH:mm:ss
     */
    private Date gmtPayment;
    /**
     * 该笔交易的退款时间。格式为yyyy-MM-dd HH:mm:ss.S
     */
    private Date gmtRefund;

    /**
     * 该笔交易结束时间。格式为yyyy-MM-dd HH:mm:ss
     */
    private Date gmtClose;

    /**
     * 支付成功的各个渠道金额信息。详见下文 资金明细信息说明。
     */
    private String fundBillList;

    /**
     * 公共回传参数，如果请求时传递了该参数，则返回给商户时会在异步通知时将该参数原样返回。本参数必须进行UrlEncode之后才可以发送给支付宝。
     */
    private String passbackParams;

    /**
     * 本交易支付时所使用的所有优惠券信息，详见下文 优惠券信息说明。
     */
    private String voucherDetailList;


}
